package com.liu.jbase.service;

import java.io.Serializable;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import com.liu.jbase.PageListVo;
import com.liu.jbase.ResultVo;

public interface IBaseService<R, T> {

	/**
	 * @author liuxingmi
	 * @datetime 2017年2月18日下午8:14:08
	 * @desc 根据id删除数据
	 * @param id
	 * @return
	 */
	ResultVo<R> deleteById(Serializable id, HttpServletRequest request);
	
	/**
	 * @date 2017年2月21日
	 * @time 下午6:01:49
	 * @author liuxingmi
	 * @desc  根据条件删除数据
	 * @param record
	 * @return
	 */
	ResultVo<R> delete(T record, HttpServletRequest request);

	/**
	 * @author liuxingmi
	 * @datetime 2017年2月18日下午8:14:47
	 * @desc 添加数据
	 * @param record
	 * @return
	 */
	ResultVo<R> add(T record, HttpServletRequest request);

	/**
	 * @author liuxingmi
	 * @datetime 2017年2月18日下午8:14:57
	 * @desc 根据id查询数据
	 * @param id
	 * @return
	 */
	ResultVo<R> findById(Serializable id, HttpServletRequest request);
    
	/**
	 * @author liuxingmi
	 * @datetime 2017年2月18日下午8:15:08
	 * @desc 查询单个数据
	 * @param record
	 * @return
	 */
	ResultVo<R> find(T record, HttpServletRequest request);

	/**
	 * @author liuxingmi
	 * @datetime 2017年2月18日下午8:15:36
	 * @desc 查询数据列表
	 * @param record
	 * @return
	 */
	ResultVo<List<R>> list(T record, HttpServletRequest request);
	
	/**
	 * @date 2017年2月21日
	 * @time 下午7:10:30
	 * @author liuxingmi
	 * @desc 数据统计
	 * @param record
	 * @return
	 */
	ResultVo<R> count(T record, HttpServletRequest request);
    
    /**
     * @author liuxingmi
     * @datetime 2017年2月18日下午8:15:46
     * @desc 更新数据
     * @param record
     * @return
     */
    ResultVo<R> update(T record, HttpServletRequest request);
    /**
     * @date 2017年2月21日
     * @time 下午5:41:46
     * @author liuxingmi
     * @desc 分页查询
     * @param record
     * @param page
     * @return
     */
    public ResultVo<PageListVo<R>> page(T record, PageListVo<R> page, HttpServletRequest request);
}
